Для нумерации CSV используй csv.DictReader с enumerate(reader, start=2), кодировка utf-8-sig. Сначала самостоятельно сравни все поля повторов. Не путай абсолютные plan/actual и delta=actual−plan; числа в ответ переносить из инструментального вывода. Разрешаю в расчёте учесть одну копию точного повтора row_id `2026-09-opex-037` внутри `opex.csv`. Исходник не менять. Остальные строки не исключать. Если значения одного ID различаются, остановись. Рассчитай кодом или доступным расчётным инструментом план-факт по филиалам и итого: выручка из sales, себестоимость из cogs, расходы из opex; результат модели = выручка − себестоимость − расходы. Покажи контрольные суммы и мост: Δвыручки − Δсебестоимости − Δрасходов. Мост должен равняться изменению результата, сумма филиалов — итогу. Если инструмента нет, не имитируй его запуск.